How to upgrade extensions to support Visual Studio 2019
Recently, I’ve updated over 30 of my extensions to support Visual Studio 2019 (16.0).
To make sure they work, I got my hands on a very early internal build of VS 2019 to test with (working on the Visual Studio team has its benefits). I’ve learned that the upgrade process is probably the easiest I’ve ever experienced.
I wanted to share that experience with you to show just how easy it is. Then you’ll know what to do once you get a copy of Visual Studio 2019.
Updates to .vsixmanifest
We need to make a couple of updates to the .vsixmanifest file. First, we must update the supported VS version range.
<InstallationTarget>
Here’s a version that support every major and minor versions of Visual Studio 14.0 (2015) and 15.0 (2017) all the way up to but not including version 16.0.
<Installation InstalledByMsi="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[14.0,16.0)" />
</Installation>
Simply change the upper bound of the version range from 16.0 to 17.0, like so:
<Installation InstalledByMsi="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[14.0,17.0)" />
</Installation>
<Prerequisite>
Next, update the version ranges in the <Prerequisite> elements. Here’s what it looked like before:
<Prerequisites>
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,16.0)" DisplayName="Visual Studio core editor" />
</Prerequisites>
We must update the version ranges to have the same upper bound as before, but in this case we can make the upper bound open ended, like so:
<Prerequisites>
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,)" DisplayName="Visual Studio core editor" />
</Prerequisites>
This means that the Prerequisite needs version 15.0 or newer.
See the updated .vsixmanifest files for Markdown Editor, Bundler & Minifier, and Image Optimizer.
What else?
Nothing. That’s it. You’re done.
Well, there is one thing that may affect your extension. Extensions that autoload a package has to do so in the background as stated in this blog post. Check out this great walkthrough on how to make that change if you haven’t already since it’s been supported since Visual Studio 2015.
What about the references to Microsoft.VisualStudio.Shell and other such assemblies? As always with new version of Visual Studio, they are automatically being redirected to the 16.0 equivalent and there is backwards compatibility to ensure it will Just WorkTM. And in my experience with the upgrade is that they in fact do just work.
I’m going to head back to adding VS 2019 support to the rest of my extensions. I’ve got about 40 left to go.